package cn.itcast.hotel.mq;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * MQ配置类 （用于创建交换机 队列 ）
 * @Author: 牛冲冲
 */
@Configuration
public class MqConfig {

    /**
     * 创建交换机
     * @return
     */
    @Bean
    public TopicExchange hotelExchange(){
        // 1、交换机名称 2、是否持久化 3、是否自动删除
        return new TopicExchange(MqConstant.HOTEL_EXCHANGE,true,false);
    }

    /**
     * 创建新增或更改队列
     * @return
     */
    @Bean
    public Queue hotelInsertQueue(){
        //1、队列名称 2、是否持久化
        return new Queue(MqConstant.HOTEL_INSERT_QUEUE, true);
    }

    /**
     * 创建删除队列
     * @return
     */
    @Bean
    public Queue hotelDeleteQueue(){
        //1、队列名称 2、是否持久化
        return new Queue(MqConstant.HOTEL_DELETE_QUEUE, true);
    }

    /**
     * 绑定新增或更改队列
     */
    @Bean
    public Binding bindHotelInsertQueue(){
        //1、队列 2、交换机 3、设置路由键
       return BindingBuilder.bind(hotelInsertQueue()).to(hotelExchange()).with(MqConstant.HOTEL_INSERT_KEY);
    }

    /**
     * 绑定删除队列
     */
    @Bean
    public Binding bindHotelDeleteQueue(){
        //1、队列 2、交换机 3、设置路由键
        return BindingBuilder.bind(hotelDeleteQueue()).to(hotelExchange()).with(MqConstant.HOTEL_DELETE_KEY);
    }


}
